#include <iostream>
#include <string>
#include <stack>
using namespace std;

bool is_open(char c) {
    return c == '(' || c == '[' || c == '{' || c == '<';
}

bool is_pr(char op, char cl) {
    return cl - op >= 1 && cl - op <= 2;
}

bool is_correct(const string s) {
    stack<char> st;
    for (auto c: s) {
        if (is_open(c)) {
            st.push(c);
        } else if (!st.empty() && is_pr(st.top(), c)) {
            st.pop();
        } else {
            return false;
        }
    }
    return st.empty();
}

int main() {
    string str;
    cin >> str;
    
    if (is_correct(str)) {
        cout << "YES" << endl;
    } else {
        cout << "NO" << endl;
    }
    return 0;
    
}


